﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;

namespace Formation_Entreprise
{
    /// <summary>
    /// La classe AccesTableFormateur contient toutes les méthodes
    /// d'accès pour la table Formateur
    /// </summary>
    class AccesTableFormateur
    {
        //********************//
        //Ajouter un formateur//
        //********************//
        public static int AjouterFormateur(objFormateur formateur)
        {
            //requete à utiliser avec les données donnés en params
            //**************************La valeur pour la col Actif doit être -1 ou 0; -1 étant vrai et 0 faux**************************************//
            string query = "INSERT INTO [Formateur] ([NomFormateur],[Titre],[Expertise],[TelBureau],[TelResidentiel],[Adresse],[TauxHoraire],[Actif]) VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8)";

            //connection à la base de donnée et Associer la requete avec la connection
            OleDbConnection oledbcn = ConnectionBD.ObtenirConnection();
            OleDbCommand oledbcmd = new OleDbCommand(query, oledbcn);

            //paramètres de la requete
            oledbcmd.Parameters.AddWithValue("@p1", formateur.Nom);
            oledbcmd.Parameters.AddWithValue("@p2", formateur.Titre);
            oledbcmd.Parameters.AddWithValue("@p3", formateur.Expertise);
            oledbcmd.Parameters.AddWithValue("@p4", formateur.TelBureau);
            oledbcmd.Parameters.AddWithValue("@p5", formateur.TelResidence);
            oledbcmd.Parameters.AddWithValue("@p6", formateur.Adresse);
            oledbcmd.Parameters.AddWithValue("@p7", formateur.TauxHoraire);
            oledbcmd.Parameters.AddWithValue("@p8", formateur.Actif);

            //Initialiser le vérificateur
            int nbLignes = 0;
            try
            {
                //ouvrir la conection
                oledbcn.Open();

                //exécuter la requete, Ajout du formateur           
                nbLignes = oledbcmd.ExecuteNonQuery();
            }
            // Gérer l'exception
            catch (OleDbException ex) { throw ex; }

            //fermeture de la conection à la base de donnée
            oledbcn.Close();
            return nbLignes;
        }


        //**********************//
        //Modifier un formateur//
        //**********************//
        public static int ModifierFormateur(objFormateur formateur)
        {
            //requete à utiliser avec les données donnés en params
            string query = "UPDATE [Formateur] SET [Titre]=?, [Expertise]=?, [TelBureau]=?, [TelResidentiel]=?, [Adresse]=?, [TauxHoraire]=?, [Actif]=? WHERE [NomFormateur]=?";

            //connection à la base de donnée et Associer la requete avec la connection
            OleDbConnection oledbcn = ConnectionBD.ObtenirConnection();
            OleDbCommand oledbcmd = new OleDbCommand(query, oledbcn);

            //paramètres de la requete
            oledbcmd.Parameters.AddWithValue("@Titre", formateur.Titre);
            oledbcmd.Parameters.AddWithValue("@Expertise", formateur.Expertise);
            oledbcmd.Parameters.AddWithValue("@TelBureau", formateur.TelBureau);
            oledbcmd.Parameters.AddWithValue("@TelResidentiel", formateur.TelResidence);
            oledbcmd.Parameters.AddWithValue("@Adresse", formateur.Adresse);
            oledbcmd.Parameters.AddWithValue("@TauxHoraire", formateur.TauxHoraire);
            oledbcmd.Parameters.AddWithValue("@Actif", formateur.Actif);
            oledbcmd.Parameters.AddWithValue("@NomFormateur", formateur.Nom);

            //Initialiser le vérificateur
            int nbLignes = 0;
            try
            {
                //ouvrir la conection
                oledbcn.Open();

                //exécuter la requete, Modification du formateur            
                nbLignes = oledbcmd.ExecuteNonQuery();
            }
            // Gérer l'exception
            catch (OleDbException ex) { throw ex; }

            //fermeture de la conection à la base de donnée
            oledbcn.Close();
            return nbLignes;
        }


        //**********************//
        //Suprimer un formateur//
        //**********************//
        public static int SuprimerFormateur(string nomFormateur)
        {
            //requete à utiliser avec les données donnés en params
            string query = "DELETE FROM Formateur WHERE NomFormateur LIKE @p1";

            //connection à la base de donnée et Associer la requete avec la connection
            OleDbConnection oledbcn = ConnectionBD.ObtenirConnection();
            OleDbCommand oledbcmd = new OleDbCommand(query, oledbcn);

            //paramètres de la requete
            oledbcmd.Parameters.AddWithValue("@p1", nomFormateur);

            //Initialiser le vérificateur
            int nbLignes = 0;           
            try
            {
                //ouvrir la conection
                oledbcn.Open();

                //exécuter la requete, supression du formateur
                nbLignes = oledbcmd.ExecuteNonQuery();
            }
            // Gérer l'exception
            catch (OleDbException ex) { throw ex; }

            //fermeture de la conection à la base de donnée
            oledbcn.Close();
            return nbLignes;
        }
    }
}
